
    /***********************************************
	 * Variables de ajuste fácil
    * /

	/ * Matriz de columnas de base de datos que deben ser leídos y enviados de vuelta a tablas de datos. Utilice un espacio donde
    * Desea insertar un campo no de base de datos (por ejemplo, una imagen del contador o estática)
	 * /
	$ AColumns = array ('motor', 'navegador', 'Plataforma', 'versión', 'grado');

	/ * Columna indexada (utilizado para una rápida y precisa tabla cardinalidad) * /
	$ SIndexColumn = "id";

	/ * Tabla DB de usar * /
	$ Estable = "ajax";

	/ * La información de conexión de base de datos * /
	$ GaSql ['user'] = "";
	$ GaSql ['password'] = "";
	$ GaSql ['db'] = "";
	$ GaSql ['server'] = "localhost";

	/ * Eliminar esta línea (que sólo incluye a mi user / pass conexión SQL) * /
	include ($ _SERVER ['DOCUMENT_ROOT'] "/ tablas de datos / mysql.php.");


	/ ***********************************************
	 * Si sólo desea utilizar la configuración básica de tablas de datos con PHP en el servidor, no
    * No hay necesidad de editar debajo de esta línea
    * /

	/ *
	 * Las funciones locales
    * /
	función fatal_error ($ sErrorMessage ='')
	{
		cabecera ($ _SERVER ['SERVER_PROTOCOL'] "500 Internal Server Error".);
		die ($ sErrorMessage);
	}


	/ *
	 * Conexión a MySQL
    * /
	if ($ gaSql ['link'] = mysql_pconnect ($ gaSql ['server'], $ gaSql ['user'], $ gaSql ['password']))
	{
        fatal_error ('No se pudo abrir la conexión al servidor');
    }

	if (! mysql_select_db ($ gaSql ['db'], $ gaSql ['link']))
	{
        fatal_error ('No se pudo seleccionar la base de datos');
    }


	/ *
	 * Paging
    * /
	$ SLIMIT = "";
	if (isset ($ _GET ['iDisplayStart']) && $ _GET ['iDisplayLength']! = '-1')
	{
		$ SLIMIT = "LIMIT". Intval ($ _GET ['iDisplayStart']). ",".
			intval ($ _GET ['iDisplayLength']);
	}


	/ *
	 * Orden
    * /
	$ Sorder = "";
	if (isset ($ _GET ['iSortCol_0']))
	{
		$ Sorder = "ORDER BY";
		for ($ i = 0; $ i <intval ($ _GET ['iSortingCols']); $ i + +)
		{
			if ($ _GET ['bSortable_. intval ($ _GET [' iSortCol_ '. $ i])] == "true")
			{
				$ Sorder. = "` ". $ AColumns [intval ($ _GET ['iSortCol_'. $ I])]." `".
					($ _GET ['SSortDir_ "$ i.] ===' Ascendente '' ascendente ':' desc ').", ";
			}
		}

		$ Sorder = substr_replace ($ Sorder, "", -2);
		if ($ Sorder == "ORDER BY")
		{
			$ Sorder = "";
		}
	}


	/ *
	 * Filtrado
	 * NOTA no coincide con la incorporada en tablas de datos de filtrado que lo hace
	 * Palabra por palabra en cualquier campo. Es posible hacer aquí, pero preocupado por la eficiencia
	 * En tablas muy grandes, y la funcionalidad de MySQL regex es muy limitada
	 * /
	$ SWhere = "";
	if (isset ($ _GET ['SSEARCH']) && $ _GET ['SSEARCH']! = "")
	{
		$ SWhere = "WHERE (";
		for ($ i = 0; $ i <count ($ aColumns); $ i + +)
		{
			$ SWhere = "` "$ aColumns [$ i]" '% mysql_real_escape_string ($ _GET. `LIKE" [' SSEARCH '] "OR...)%".';
		}
		$ SWhere = substr_replace ($ sWhere, "", -3);
		$ SWhere = ').';
	}

	/ * Columna individual filtrado * /
	for ($ i = 0; $ i <count ($ aColumns); $ i + +)
	{
		if (isset ($ _GET ['bSearchable_'. $ i]) && $ _GET ['bSearchable_'. $ i] == && "verdaderos" $ _GET ['sSearch_'. $ i]! ='')
		{
			if ($ sWhere == "")
			{
				$ SWhere = "WHERE";
			}
			más
			{
				$ SWhere = "Y".;
			}
			$ SWhere = "` "$ aColumns [$ i]" '%. Mysql_real_escape_string ($ _GET `LIKE"' "... ['SSearch_%" $ i.]).';
		}
	}


	/ *
	 * Consultas SQL
    * Obtener dato disponible
    * /
	$ SQuery = "
		SELECT SQL_CALC_FOUND_ROWS `". Str_replace ("", "", implosión ("`, `", $ aColumns)). "'
		DESDE $ estable
		$ SWhere
		$ Sorder
		$ SLIMIT
		";
	$ RResult = mysql_query ($ sQuery, $ gaSql ['link']) o fatal_error ('Error MySQL:'. Mysql_errno ());

	/ * La longitud del conjunto de datos después de la filtración * /
	$ SQuery = "
		SELECT FOUND_ROWS ()
	";
	$ RResultFilterTotal = mysql_query ($ sQuery, $ gaSql ['link']) o fatal_error ('Error MySQL:'. Mysql_errno ());
	$ AResultFilterTotal = mysql_fetch_array ($ rResultFilterTotal);
	$ IFilteredTotal = $ aResultFilterTotal [0];

	/ * Longitud total del conjunto de datos * /
	$ SQuery = "
		SELECT COUNT (`". $ SIndexColumn. "')
		DESDE $ estable
	";
	$ RResultTotal = mysql_query ($ sQuery, $ gaSql ['link']) o fatal_error ('Error MySQL:'. Mysql_errno ());
	$ AResultTotal = mysql_fetch_array ($ rResultTotal);
	$ ITotal = $ aResultTotal [0];


	/ *
	 * Salida
    * /
	$ Salida = array (
		"SECHO" => intval ($ _GET ['SECHO']),
		"ITotalRecords" => $ iTotal,
		"ITotalDisplayRecords" => $ iFilteredTotal,
		"AaData" => array ()
	);

	while ($ arow = mysql_fetch_array ($ rResult))
	{
		$ Row = array ();
		for ($ i = 0; $ i <count ($ aColumns); $ i + +)
		{
			if ($ aColumns [$ i] == "version")
			{
                / * Formato de salida especial para la columna 'versión' * /
				$ Row [] = ($ arow [$ aColumns [$ i]] == "0")? '-': $ Arow [$ aColumns [$ i]];
			}
			else if ($ aColumns [$ i]! = '')
			{
                / * Salida general * /
				$ Row [] = $ arow [$ aColumns [$ i]];
			}
		}
		$ Salida ["aaData '] [] = $ row;
	}

	echo json_encode ($ salida);
?>